package br.unesp.demac.bcc.soo.clarus.dao;

import br.unesp.demac.bcc.soo.clarus.bean.Editora;
import br.unesp.demac.bcc.soo.clarus.util.FabricaConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Evaldo
 */
public class EditoraDAOImp implements EditoraDAO {
    
    /**
     * Salva a editora da obra
     * @param conn Conexão com o banco de dados
     * @param edit Editora da obra
     * @return Id da Editora
     */
    @Override
    public int salvarEditora(Connection conn, Editora edit) {
        int idEditora = 0;

        final String query = "INSERT INTO editora (nomeEditora)"
                + " VALUES (?);";
        PreparedStatement pstmt = null;
        ResultSet res = null;


        try {
            pstmt = conn.prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS);

            pstmt.setString(1, edit.getNomeEditora());
            pstmt.execute();
            res = pstmt.getGeneratedKeys();

            if (res.next()) {
                idEditora = res.getInt(1);
            }
        } catch (SQLException ex) {
            System.out.println("Erro ao inserir Editora: " + ex.getMessage());
        } finally {
            FabricaConexao.fechar(pstmt);
        }

        return idEditora;
    }
    
    @Override
    public Editora getEditoraById(Connection conn, int idEditora) {

        final String query = "SELECT nomeEditora FROM Editora WHERE idEditora = ?";
        PreparedStatement pstmt = null;
        ResultSet res = null;
        Editora editora = null;

        if (conn != null) {
            try {
                
                pstmt = conn.prepareStatement(query);
                pstmt.setInt(1, idEditora);
                res = pstmt.executeQuery();

                if (res.next()) {
                    editora = new Editora();
                    editora.setNomeEditora(res.getString("nomeEditora"));
                } 

            } catch (SQLException ex) {
                System.out.println("Erro ao recuperar editora: " + ex.getMessage());
            } finally {
                FabricaConexao.fechar(pstmt);
            }
        }

        return editora;
    }
}
